<!DOCTYPE html> <html lang=zh-cn style><!--
 Page saved with SingleFile 
 url: https://www.cnblogs.com/CCE-SWR/p/10494025.html 
 saved date: Sat Jan 18 2020 20:39:50 GMT+0800 (China Standard Time)
--><meta charset=utf-8>
<meta name=viewport content="width=device-width, initial-scale=1.0">
<meta name=referrer content=origin>
<meta property=og:description content=希望这篇文章能够帮助说明Kubernetes容器内存限制是如何设置和实现的，以及为什么你需要正确设置这些值。如果你为Kubernetes提供了它所需要的足够信息，它可以智能地调度你的任务并最大化使用你>
<meta http-equiv=Cache-Control content=no-transform>
<meta http-equiv=Cache-Control content=no-siteapp>
<meta http-equiv=X-UA-Compatible content="IE=edge">
<title>深入理解Kubernetes资源限制：内存 - 容器魔方 - 博客园</title>
<style>input[type=button]{-webkit-appearance:button}#blog_post_info_block{margin-top:20px}#EntryTag{margin-top:0!important}.div_my_zzk{margin-top:5px;margin-bottom:5px}.input_my_zzk{vertical-align:middle}input.btn_my_zzk{vertical-align:middle;height:22px;font-size:12px;padding-left:5px;padding-right:5px}.login_tips{background-image:url();background-repeat:no-repeat;margin-top:10px;padding:0 0 10px 25px;font-weight:bold}.login_tips a{text-decoration:underline!important}#comment_nav{text-align:right}#comment_nav a{padding-left:10px}#author_profile{float:left;width:280px;margin-top:0;margin-bottom:10px;color:#000;margin-left:0;font-size:12px}#author_profile a:hover{text-decoration:underline}.author_avatar{vertical-align:top;float:left;margin-right:5px;padding-top:5px;padding-left:2px;border:0}.author_profile_info{float:left;line-height:18px}#div_digg{float:right;margin-bottom:10px;margin-right:30px;font-size:12px;width:125px;text-align:center;margin-top:10px}.diggit{float:left;width:46px;height:52px;background:url() no-repeat;text-align:center;cursor:pointer;margin-top:2px;padding-top:5px}.diggnum{font-size:14px;color:#075db3;font-family:Verdana}.buryit{float:right;margin-left:20px;width:46px;height:52px;background:url() no-repeat;text-align:center;cursor:pointer;margin-top:2px;padding-top:5px}.burynum{font-size:14px;color:#075db3;font-family:Verdana}.diggword{margin-top:5px;margin-left:0;font-size:12px;color:gray}#profile_block{margin-top:5px;line-height:1.5;text-align:left}#post_next_prev{line-height:1.8;font-size:12px}#post_next_prev a.p_n_p_prefix:link{text-decoration:none}#post_next_prev a.p_n_p_prefix:hover{text-decoration:underline}#green_channel{padding:10px 0;margin-bottom:10px;margin-top:10px;border:#c0c0c0 1px dashed;font-size:12px;width:350px;text-align:center}#green_channel a{background:url(%3D%3D) repeat-x;display:inline-block;padding:3px 8px;color:#fff;text-decoration:none;font-weight:bold;cursor:pointer;margin-right:10px;-moz-border-radius:5px;-webkit-border-radius:10px;-moz-box-shadow:0 1px 3px rgba(0,0,0,.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.5);text-shadow:0 -1px 1px rgba(0,0,0,.25);vertical-align:middle}#green_channel a:hover{background-image:url()}#green_channel #green_channel_digg{background-color:#2daebf}#green_channel #green_channel_follow{background-color:#e33100}#green_channel #green_channel_favorite{background-color:#ffb515}#green_channel #green_channel_weibo img{vertical-align:middle;border:0;margin-left:5px;box-shadow:none}#green_channel #green_channel_weibo,#green_channel #green_channel_wechat{background:0;padding:3px 2px;-moz-border-radius:none;-webkit-border-radius:none;-moz-box-shadow:none;-webkit-box-shadow:none;text-shadow:none}#green_channel #green_channel_wechat img{width:24px;height:24px;border:medium none;box-shadow:none;margin-left:5px;vertical-align:middle}#cnblogs_post_body{margin-bottom:20px}#cnblogs_post_body img{height:auto}.ad_text_commentbox{margin-top:5px;margin-bottom:5px}#ad_t2{margin-top:5px;line-height:1.8}#ad_t2 a{margin-right:10px}#opt_under_post{line-height:1.8}.recent_comment_author{text-align:right;margin-right:4px}.Cal{width:100%}.recent_comment_body{white-space:pre-wrap;word-wrap:break-word}#cnblogs_post_body{word-break:break-word}#cnblogs_post_body p{margin:10px auto;text-indent:0}#cnblogs_post_body h3{font-size:16px;font-weight:bold;line-height:1.5;margin:10px 0}#div_digg .diggnum{line-height:1.5em!important}#div_digg .burynum{line-height:1.5em!important}#green_channel a:link,#green_channel a:visited,#green_channel a:active{color:#fff!important;border:none!important}#blog-news{overflow:hidden}@-webkit-keyframes ui-dialog-loading{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes ui-dialog-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}#EntryTag{margin-top:20px;font-size:9pt}*{margin:0;padding:0}html{height:100%}body{color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;min-height:101%;background:url() top center no-repeat #000}table{border-collapse:collapse;border-spacing:0}img{border:0}ul{word-break:break-all}li{list-style:none}h2{font-weight:normal}a:link{color:#000;text-decoration:none}a:visited{color:#000;text-decoration:none}a:hover{color:#f60;text-decoration:underline}a:active{color:#000;text-decoration:none}.clear{clear:both}#home{margin:0 auto;width:980px}#header{margin-top:2em}#blogTitle{height:60px;clear:both}#blogTitle h1{font-size:150%;font-weight:bold;line-height:1.5em;margin-left:1em;margin-top:10px;width:50%;float:left;display:inline;letter-spacing:1px}#blogTitle h2{margin-top:2em;margin-left:8em;line-height:1.5em;width:50%;float:left;display:inline;font-size:14px}#blogTitle h1 a,#blogTitle h2{color:#fff;font-family:"微软雅黑";text-shadow:3px 3px 3px #003d44}#blogLogo{float:right}#navigator{background-color:#333;height:60px;clear:both;margin-top:60px;position:relative}#navList{min-height:30px;float:left;margin-left:30px}#navList li{float:left}#navList a{margin:18px 10px 0 0;padding:0 10px;font:14px/1.5em "微软雅黑";display:block}#navList a:link,#navList a:visited,#navList a:active{color:#fff;text-shadow:3px 3px 3px #000}#navList a:hover{text-decoration:underline}.blogStats{float:right;color:#ccc;margin-top:20px;margin-right:2px;text-align:right;visibility:hidden}#main{min-width:980px;text-align:left;clear:both;background:#fff}#mainContent .forFlow{float:none;width:auto}#mainContent{min-height:200px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;word-break:break-all;float:left;width:700px;background:#fff}.postTitle{padding:0 100px 10px 20px;clear:both;border-left:5px solid #1fa6e6}.postTitle a:link,.postTitle a:visited,.postTitle a:active{color:#1c7791}.postTitle a:hover{color:#f60;text-decoration:none}.postDesc{clear:both}.postDesc a:link,.postDesc a:visited,.postDesc a:active{color:#a3a3a3}.postDesc a:hover{color:#f60;text-decoration:none}#sideBar{min-height:200px;padding:0 5px 0 5px;margin-left:700px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;word-break:break-all;padding-bottom:20px}.newsItem .catListTitle{text-align:left;padding:5px 10px;border:1px solid #ccc;background:#f0f0f0}.newsItem{padding:0 0 5px 0;margin-bottom:2em}.Cal{border:0;color:#666}.Cal td{padding:3px 0}.CalTodayDay{color:#f60}.CalDayHeader{border-bottom:1px solid #ccc}.CalTitle{width:100%;background:#fff;color:#000;border-bottom:1px solid #666}.catListTitle{font-weight:bold;line-height:1.5em;font-size:110%;margin-top:15px;margin-bottom:10px;border-bottom:1px solid #000}.catListComment{line-height:1.5em}#sideBarMain{margin-top:45px}#sideBarMain ul{line-height:1.5em}.catListLink,.catListTag,.catListPostArchive,.mySearch,.catListComment,.catListView,.catListFeedback{margin-bottom:2em}#blog-sidecolumn .catListTitle{text-align:left;padding:5px 10px;background:#f0f0f0;border-bottom:0;border:1px solid #ccc}.catListLink ul,.catListTag ul,.catListPostArchive ul,.catListComment ul,.catListView ul,.catListFeedback ul{padding-left:1em}.catListLink ul li,.catListTag ul li,.catListPostArchive ul li,.catListComment ul li,.catListView ul li,.catListFeedback ul li{margin:.5em}#topics{min-height:200px;padding:1em}#topics .postTitle{font-size:130%;font-weight:bold;border-bottom:1px solid #999;line-height:1.5em;padding-left:5px}.postBody{padding:5px 2px 5px 5px;line-height:1.8;color:#000;border-bottom:1px solid #000}#EntryTag{color:#666}#EntryTag a{margin-left:5px}#EntryTag a:link,#EntryTag a:visited,#EntryTag a:active{color:#666}#EntryTag a:hover{color:#f60}#topics .postDesc{float:none;text-align:right;padding-right:5px;color:#666;margin-top:5px}.mySearch .input_my_zzk{height:1.4em;width:175px}.commentform{padding:0 5px 0 2em}#footer{text-align:center;min-height:15px;margin-top:10px;padding-top:10px;margin-bottom:10px;padding-bottom:10px;color:#fff}.postBody a:link,.postBody a:visited,.postBody a:active{text-decoration:underline}#blog-news{margin-left:15px}#cnblogs_post_body img{max-width:660px}@media only screen and (max-width:767px){#home{width:auto;min-width:unset}#mainContent{word-break:break-word;width:auto;float:none}#main{min-width:unset}#sideBar{margin-left:0}.postTitle{padding-right:0}}</style>
<style media="only screen and (max-width: 767px)">body{font-size:14px!important;font-family:'PingFang SC','Helvetica Neue','Helvetica','Arial',sans-serif;-webkit-text-size-adjust:none}#blog_nav_rss{display:none!important}#blog_nav_newpost{display:none!important}img{max-width:300px!important;height:auto}#green_channel{width:320px}#sidebar_search_box input[type=text]{width:260px}.commentform{margin-left:10px}</style>
<link type=application/rss+xml rel=alternate href=https://www.cnblogs.com/CCE-SWR/rss>
<link type=application/rsd+xml rel=EditURI href=https://www.cnblogs.com/CCE-SWR/rsd.xml>
<link type=application/wlwmanifest+xml rel=wlwmanifest href=https://www.cnblogs.com/CCE-SWR/wlwmanifest.xml>
<link type=image/x-icon rel="shortcut icon" href=><style>.sf-hidden{display:none!important}</style></head>
<body>
 <a name=top></a>
 
 
<div id=home>
<div id=header>
 <div id=blogTitle>
 <a id=lnkBlogLogo href=https://www.cnblogs.com/CCE-SWR/><img id=blogLogo src="" alt=返回主页></a> 
 
<h1><a id=Header1_HeaderTitle class="headermaintitle HeaderMainTitle" href=https://www.cnblogs.com/CCE-SWR/>容器魔方</a>
</h1>
<h2>
云容器引擎（Cloud Container Engine）提供高可靠高性能的企业级容器应用管理服务，支持Kubernetes社区原生应用和工具，简化云上自动化容器运行环境搭建。
</h2>
 
 </div>
 <div id=navigator>
 
<ul id=navList>
<li><a id=blog_nav_sitehome class=menu href=https://www.cnblogs.com/>
博客园</a>
</li>
<li>
<a id=blog_nav_myhome class=menu href=https://www.cnblogs.com/CCE-SWR/>
首页</a>
</li>
<li>
<a id=blog_nav_newpost class=menu href="https://i.cnblogs.com/EditPosts.aspx?opt=1">
新随笔</a>
</li>
<li>
<a id=blog_nav_contact class=menu href=https://msg.cnblogs.com/send/%E5%AE%B9%E5%99%A8%E9%AD%94%E6%96%B9>
联系</a></li>
<li>
<a id=blog_nav_rss class=menu href=https://www.cnblogs.com/CCE-SWR/rss/>
订阅</a>
</li>
<li>
<a id=blog_nav_admin class=menu href=https://i.cnblogs.com/>
管理</a>
</li>
</ul>
 <div class=blogStats>
 
 <span id=stats_post_count>随笔 - 
82&nbsp; </span>
<span id=stats_article_count>文章 - 
0&nbsp; </span>
<span id=stats-comment_count>评论 - 
2</span>
 
 </div>
 </div>
</div>
<div id=main>
 <div id=mainContent>
 <div class=forFlow>
 <div id=post_detail>
 
 <div id=topics>
 <div class=post>
 <h1 class=postTitle>
 
<a id=cb_post_title_url class=postTitle2 href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>深入理解Kubernetes资源限制：内存</a>
 </h1>
 <div class=clear></div>
 <div class=postBody>
 
<div id=cnblogs_post_body class=blogpost-body>
 <h3>写在前面</h3>
<p>当我开始大范围使用Kubernetes的时候，我开始考虑一个我做实验时没有遇到的问题：当集群里的节点没有足够资源的时候，Pod会卡在Pending状态。你是没有办法给节点增加CPU或者内存的，那么你该怎么做才能将这个Pod从这个节点拿走？最简单的办法是添加另一个节点，我承认我总是这么干。最终这个策略无法发挥出Kubernetes最重要的一个能力：即它优化计算资源使用的能力。这些场景里面实际的问题并不是节点太小，而是我们没有仔细为Pod计算过资源限制。</p>
<p>资源限制是我们可以向Kubernetes提供的诸多配置之一，它意味着两点：工作负载运行需要哪些资源；最多允许消费多少资源。第一点对于调度器而言十分重要，因为它要以此选择合适的节点。第二点对于Kubelet非常重要，每个节点上的守护进程Kubelet负责Pod的运行健康状态。大多数本文的读者可能对资源限制有一定的了解，实际上这里面有很多有趣的细节。在这个系列的两篇文章中我会先仔细分析内存资源限制，然后第二篇文章中分析CPU资源限制。</p>
<p>&nbsp;</p>
<h3>资源限制</h3>
<p>资源限制是通过每个容器containerSpec的resources字段进行设置的，它是v1版本的ResourceRequirements类型的API对象。每个指定了"limits"和"requests"的对象都可以控制对应的资源。目前只有CPU和内存两种资源。第三种资源类型，持久化存储仍然是beta版本，我会在以后的博客里进行分析。大多数情况下，deployment、statefulset、daemonset的定义里都包含了podSpec和多个containerSpec。这里有个完整的v1资源对象的yaml格式配置：</p>
<p><img src= alt></p>
<p>&nbsp;</p>
<p><br>这个对象可以这么理解：这个容器通常情况下，需要5%的CPU时间和50MiB的内存（requests），同时最多允许它使用10%的CPU时间和100MiB的内存（limits）。我会对requests和limits的区别做进一步讲解，但是一般来说，在调度的时候requests比较重要，在运行时limits比较重要。尽管资源限制配置在每个容器上，你可以认为Pod的资源限制就是它里面容器的资源限制之和，我们可以从系统的视角观察到这种关系。</p>
<h3>内存限制</h3>
<p>通常情况下分析内存要比分析CPU简单一些，所以我从这里开始着手。我的一个目标是给大家展示内存在系统中是如何实现的，也就是Kubernetes对容器运行时（docker/containerd）所做的工作，容器运行时对Linux内核所做的工作。从分析内存资源限制开始也为后面分析CPU打好了基础。首先，让我们回顾一下前面的例子： </p>
<p><img src= alt></p>
<p>&nbsp;</p>
<p><br>单位后缀Mi表示的是MiB，所以这个资源对象定义了这个容器需要50MiB并且最多能使用100MiB的内存。当然还有其他单位可以进行表示。为了了解如何用这些值是来控制容器进程，我们首先创建一个没有配置内存限制的Pod: </p>
<p><em>$ kubectl run limit-test --image=busybox --command -- /bin/sh -c "while true; do sleep 2; done"</em></p>
<p><em>deployment.apps "limit-test" created</em></p>
<p>用Kubectl命令我们可以验证这个Pod是没有资源限制的：</p>
<p><em>$ kubectl get pods limit-test-7cff9996fc-zpjps -o=jsonpath='{.spec.containers[0].resources}'</em></p>
<p><em>map[]</em></p>
<p>Kubernetes最酷的一点是你可以跳到系统以外的角度来观察每个构成部分，所以我们登录到运行Pod的节点，看看Docker是如何运行这个容器的： </p>
<p><em>$ docker ps | grep busy | cut -d' ' -f1</em></p>
<p><em>5c3af3101afb</em></p>
<p><em>$ docker inspect 5c3af3101afb -f "{{.HostConfig.Memory}}"</em></p>
<p><em>0</em></p>
<p>这个容器的.HostConfig.Memory域对应了docker run时的--memory参数，0值表示未设定。Docker会对这个值做什么？为了控制容器进程能够访问的内存数量，Docker配置了一组control group，或者叫cgroup。Cgroup在2008年1月时合并到Linux 2.6.24版本的内核。它是一个很重要的话题。我们说cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU和各种设备都有对应的cgroup。Cgroup是具有层级的，这意味着每个cgroup拥有一个它可以继承属性的父亲，往上一直直到系统启动时创建的root cgroup。</p>
<p>Cgroup可以通过/proc和/sys伪文件系统轻松查看到，所以检查容器如何配置内存的cgroup就很简单了。在容器的Pid namespace里，根进程的pid为1，但是namespace以外它呈现的是系统级pid，我们可以用来查找它的cgroups：</p>
<p><em>$ ps ax | grep /bin/sh</em></p>
<p><em> 9513 ? Ss 0:00 /bin/sh -c while true; do sleep 2; done</em></p>
<p><em>$ sudo cat /proc/9513/cgroup</em></p>
<p><em>...</em></p>
<p><em>6:memory:/kubepods/burstable/podfbc202d3-da21-11e8-ab5e-42010a80014b/0a1b22ec1361a97c3511db37a4bae932d41b22264e5b97611748f8b662312574</em></p>
<p>我列出了内存cgroup，这正是我们所关注的。你在路径里可以看到前面提到的cgroup层级。一些比较重要的点是：首先，这个路径是以kubepods开始的cgroup，所以我们的进程继承了这个group的每个属性，还有burstable的属性（Kubernetes将Pod设置为burstable QoS类别）和一组用于审计的Pod表示。最后一段路径是我们进程实际使用的cgroup。我们可以把它追加到/sys/fs/cgroups/memory后面查看更多信息： </p>
<p><em>$ ls -l /sys/fs/cgroup/memory/kubepods/burstable/podfbc202d3-da21-11e8-ab5e-42010a80014b/0a1b22ec1361a97c3511db37a4bae932d41b22264e5b97611748f8b662312574</em></p>
<p><em>...</em></p>
<p><em>-rw-r--r-- 1 root root 0 Oct 27 19:53 memory.limit_in_bytes</em></p>
<p><em>-rw-r--r-- 1 root root 0 Oct 27 19:53 memory.soft_limit_in_bytes</em></p>
<p>再一次，我只列出了我们所关心的记录。我们暂时不关注memory.soft_limit_in_bytes，而将重点转移到memory.limit_in_bytes属性，它设置了内存限制。它等价于Docker命令中的--memory参数，也就是Kubernetes里的内存资源限制。我们看看： </p>
<p><em>$ sudo cat /sys/fs/cgroup/memory/kubepods/burstable/podfbc202d3-da21-11e8-ab5e-42010a80014b/0a1b22ec1361a97c3511db37a4bae932d41b22264e5b97611748f8b662312574/memory.limit_in_bytes</em></p>
<p><em>9223372036854771712</em></p>
<p>这是没有设置资源限制时我的节点上显示的情况。这里有对它的一个简单的解释(https://unix.stackexchange.com/questions/420906/what-is-the-value-for-the-cgroups-limit-in-bytes-if-the-memory-is-not-restricte)。所以我们看到如果没有在Kubernetes里设置内存限制的话，会导致Docker设置HostConfig.Memory值为0，并进一步导致容器进程被放置在默认值为"no limit"的memory.limit_in_bytes内存cgroup下。我们现在创建使用100MiB内存限制的Pod： </p>
<p><em>$ kubectl run limit-test --image=busybox --limits "memory=100Mi" --command -- /bin/sh -c "while true; do sleep 2; done"</em></p>
<p><em>deployment.apps "limit-test" created</em></p>
<p><em>我们再一次使用kubectl验证我们的资源配置： </em></p>
<p><em>$ kubectl get pods limit-test-5f5c7dc87d-8qtdx -o=jsonpath='{.spec.containers[0].resources}'</em></p>
<p><em>map[limits:map[memory:100Mi] requests:map[memory:100Mi]]</em></p>
<p>你会注意到除了我们设置的limits外，Pod还增加了requests。当你设置limits而没有设置requests时，Kubernetes默认让requests等于limits。如果你从调度器的角度看这是非常有意义的。我会在下面进一步讨论requests。当这个Pod启动后，我们可以看到Docker如何配置的容器以及这个进程的内存cgroup： </p>
<p><em>$ docker ps | grep busy | cut -d' ' -f1</em></p>
<p><em>8fec6c7b6119</em></p>
<p><em>$ docker inspect 8fec6c7b6119 --format '{{.HostConfig.Memory}}'</em></p>
<p><em>104857600</em></p>
<p><em>$ ps ax | grep /bin/sh</em></p>
<p><em> 29532 ? Ss 0:00 /bin/sh -c while true; do sleep 2; done</em></p>
<p><em>$ sudo cat /proc/29532/cgroup</em></p>
<p><em>...</em></p>
<p><em>6:memory:/kubepods/burstable/pod88f89108-daf7-11e8-b1e1-42010a800070/8fec6c7b61190e74cd9f88286181dd5fa3bbf9cf33c947574eb61462bc254d11</em></p>
<p><em>$ sudo cat /sys/fs/cgroup/memory/kubepods/burstable/pod88f89108-daf7-11e8-b1e1-42010a800070/8fec6c7b61190e74cd9f88286181dd5fa3bbf9cf33c947574eb61462bc254d11/memory.limit_in_bytes</em></p>
<p><em>104857600</em></p>
<p>正如你所见，Docker基于我们的containerSpec正确地设置了这个进程的内存cgroup。但是这对于运行时意味着什么？Linux内存管理是一个复杂的话题，Kubernetes工程师需要知道的是：当一个宿主机遇到了内存资源压力时，内核可能会有选择性地杀死进程。如果一个使用了多于限制内存的进程会有更高几率被杀死。因为Kubernetes的任务是尽可能多地向这些节点上安排Pod，这会导致节点内存压力异常。如果你的容器使用了过多内存，那么它很可能会被oom-killed。如果Docker收到了内核的通知，Kubernetes会找到这个容器并依据设置尝试重启这个Pod。</p>
<p>所以Kubernetes默认创建的内存requests是什么？拥有一个100MiB的内存请求会影响到cgroup？可能它设置了我们之前看到的memory.soft_limit_in_bytes？让我们看看：</p>
<p><em>$ sudo cat /sys/fs/cgroup/memory/kubepods/burstable/pod88f89108-daf7-11e8-b1e1-42010a800070/8fec6c7b61190e74cd9f88286181dd5fa3bbf9cf33c947574eb61462bc254d11/memory.soft_limit_in_bytes</em></p>
<p><em>9223372036854771712</em></p>
<p>你可以看到软限制仍然被设置为默认值“no limit”。即使Docker支持通过参数--memory-reservation进行设置，但Kubernetes并不支持这个参数。这是否意味着为你的容器指定内存requests并不重要？不，不是的。requests要比limits更重要。limits告诉Linux内核什么时候你的进程可以为了清理空间而被杀死。requests帮助Kubernetes调度找到合适的节点运行Pod。如果不设置它们，或者设置得非常低，那么可能会有不好的影响。</p>
<p>例如，假设你没有配置内存requests来运行Pod，而配置了一个较高的limits。正如我们所知道的Kubernetes默认会把requests的值指向limits，如果没有合适的资源的节点的话，Pod可能会调度失败，即使它实际需要的资源并没有那么多。另一方面，如果你运行了一个配置了较低requests值的Pod，你其实是在鼓励内核oom-kill掉它。为什么？假设你的Pod通常使用100MiB内存，你却只为它配置了50MiB内存requests。如果你有一个拥有75MiB内存空间的节点，那么这个Pod会被调度到这个节点。当Pod内存消耗扩大到100MiB时，会让这个节点压力变大，这个时候内核可能会选择杀掉你的进程。所以我们要正确配置Pod的内存requests和limits。</p>
<p>&nbsp;</p>
</div>
<div id=MySignature class=sf-hidden></div>
<div class=clear></div>
<div id=blog_post_info_block>
<div id=EntryTag>
 标签: 
 <a href=https://www.cnblogs.com/CCE-SWR/tag/k8s/>k8s</a>, <a href=https://www.cnblogs.com/CCE-SWR/tag/%E5%86%85%E5%AD%98/>内存</a></div>
 <div id=blog_post_info>
<div id=green_channel>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html id=green_channel_digg>好文要顶</a>
 <a id=green_channel_follow href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>关注我</a>
 <a id=green_channel_favorite href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>收藏该文</a>
 <a id=green_channel_weibo href=https://www.cnblogs.com/CCE-SWR/p/10494025.html title=分享至新浪微博><img src= alt></a>
 <a id=green_channel_wechat href=https://www.cnblogs.com/CCE-SWR/p/10494025.html title=分享至微信><img src= alt></a>
</div>
<div id=author_profile>
 <div id=author_profile_info class=author_profile_info>
 <a href=https://home.cnblogs.com/u/CCE-SWR/ target=_blank><img src= class=author_avatar alt></a>
 <div id=author_profile_detail class=author_profile_info>
 <a href=https://home.cnblogs.com/u/CCE-SWR/>容器魔方</a><br>
 <a href=https://home.cnblogs.com/u/CCE-SWR/followees/>关注 - 0</a><br>
 <a href=https://home.cnblogs.com/u/CCE-SWR/followers/>粉丝 - 7</a>
 </div>
 </div>
 <div class=clear></div>
 <div id=author_profile_honor></div>
 <div id=author_profile_follow>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>+加关注</a>
 </div>
</div>
<div id=div_digg>
 <div class=diggit>
 <span class=diggnum id=digg_count>0</span>
 </div>
 <div class=buryit>
 <span class=burynum id=bury_count>0</span>
 </div>
 <div class=clear></div>
 <div class=diggword id=digg_tips>
 </div>
</div>
</div>
 <div class=clear></div>
 <div id=post_next_prev>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10487793.html class=p_n_p_prefix>« </a> 上一篇： <a href=https://www.cnblogs.com/CCE-SWR/p/10487793.html title="发布于 2019-03-07 10:07">容器多云/混合云，云时代灾备新利器</a>
 <br>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10508741.html class=p_n_p_prefix>» </a> 下一篇： <a href=https://www.cnblogs.com/CCE-SWR/p/10508741.html title="发布于 2019-03-11 09:37">KubeEdge v0.2发布，全球首个K8S原生的边缘计算平台开放云端代码</a>
</div>
</div>
 </div>
 <div class=postDesc>posted @ 
<span id=post-date>2019-03-08 09:47</span>&nbsp;
<a href=https://www.cnblogs.com/CCE-SWR/>容器魔方</a>&nbsp;
阅读(<span id=post_view_count>1112</span>)&nbsp;
评论(<span id=post_comment_count>0</span>)&nbsp;
<a href="https://i.cnblogs.com/EditPosts.aspx?postid=10494025" rel=nofollow>编辑</a>&nbsp;
<a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>收藏</a></div>
 </div>
 
 
 </div>
</div>
<a name=!comments></a>
<div id=blog-comments-placeholder></div>
<div id=comment_form class=commentform>
 <a name=commentform></a>
 <div id=divCommentShow></div>
 <div id=comment_nav><span id=span_refresh_tips></span><a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html id=lnk_RefreshComments runat=server clientidmode=Static>刷新评论</a><a href=#>刷新页面</a><a href=#top>返回顶部</a></div>
 <div id=comment_form_container><div class=login_tips>
 注册用户登录后才能发表评论，请 
 <a rel=nofollow href=https://www.cnblogs.com/CCE-SWR/p/10494025.html class=underline>登录</a>
 或 
 <a rel=nofollow href=https://www.cnblogs.com/CCE-SWR/p/10494025.html class=underline>注册</a>，
 <a href=https://www.cnblogs.com/>访问</a> 网站首页。
</div></div>
 <div class=ad_text_commentbox id=ad_text_under_commentbox></div>
 <div id=ad_t2><a href=http://www.ucancode.com/index.htm target=_blank>【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库</a><br><a href=http://click.aliyun.com/m/1000081987/ target=_blank>【推荐】阿里云双11返场来袭，热门产品低至一折等你来抢！</a><br><a href="https://cloud.tencent.com/act/developer?fromSource=gwzcw.3196335.3196335.3196335&amp;utm_medium=cpc&amp;utm_id=gwzcw.3196335.3196335.3196335" target=_blank>【活动】开发者上云必备，腾讯云1核4G 2M云服务器11元/月起</a><br><a href="https://cloud.baidu.com/campaign/Promotion-20191111/index.html?track=cp:dsp|pf:pc|pp:chui-bokeyuan-huodong-19shuangshiyiganenji-BCC-cpaxingshi-191210|pu:cpa-xingshi|ci:2019syj|kw:2172212" target=_blank>【推荐】百度智能云岁末感恩季，明星产品低至1元新老用户畅享</a><br><a href="https://www.jdcloud.com/cn/activity/newUser?utm_source=DMT_cnblogs&amp;utm_medium=CH&amp;utm_campaign=09vm&amp;utm_term=Virtual-Machines" target=_blank>【活动】京东云限时优惠1.5折购云主机，最高返价值1000元礼品！</a><br></div>
 <div id=opt_under_post></div>
 
 
 
 <div id=cnblogs_c1 class="c_ad_block sf-hidden">
 <div id=div-gpt-ad-1546353474406-0 style=height:250px;width:300px></div>
 </div>
 <div id=under_post_news></div>
 <div id=cnblogs_c2 class="c_ad_block sf-hidden">
 <div id=div-gpt-ad-1539008685004-0 style=height:60px;width:468px>
 
 </div>
 </div>
 <div id=under_post_kb>
<div class="itnews c_ad_block sf-hidden">
 <b>最新 IT 新闻</b>:
 <br>
 · <a href=https://news.cnblogs.com/n/653880/ target=_blank>开源在不断发展，但似乎有些跑偏？</a>
 <br>
 · <a href=https://news.cnblogs.com/n/653879/ target=_blank>你敢坐吗？空客首次实现飞机全自动起飞：基于图像识别</a>
 <br>
 · <a href=https://news.cnblogs.com/n/653878/ target=_blank>寻找下个SpaceX！太空领域创业投资创历史新高</a>
 <br>
 · <a href=https://news.cnblogs.com/n/653877/ target=_blank>澳美科学家培育出抗登革热病毒的转基因蚊子</a>
 <br>
 · <a href=https://news.cnblogs.com/n/653876/ target=_blank>中科院国产编程语言木兰，号称“自主可控”却引爆换皮质疑</a>
 <br>
 » <a href=https://news.cnblogs.com/ title="IT 新闻" target=_blank>更多新闻...</a>
</div></div>
 <div id=HistoryToday class="c_ad_block sf-hidden"></div>
 
</div>
 </div>
 </div>
 <div id=sideBar>
 <div id=sideBarMain>
 
<div id=sidebar_news class=newsItem>
<h3 class=catListTitle>公告</h3>
<div id=blog-news>
 
 <div id=profile_block>
 昵称：
 <a href=https://home.cnblogs.com/u/CCE-SWR/>
 容器魔方
 </a>
 <br>
 园龄：
 <a href=https://home.cnblogs.com/u/CCE-SWR/ title=入园时间：2018-11-02>
 1年2个月
 </a>
 <br>
 粉丝：
 <a href=https://home.cnblogs.com/u/CCE-SWR/followers/>
 7
 </a>
 <br>
 关注：
 <a href=https://home.cnblogs.com/u/CCE-SWR/followees/>
 0
 </a>
 <div id=p_b_follow>
<a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>+加关注</a></div>
 
 </div>
</div>
</div>
 <div id=blog-calendar>
<table id=blogCalendar class=Cal cellspacing=0 cellpadding=0 title=Calendar border=0>
 <tbody>
 <tr>
 <td colspan=7>
 <table class=CalTitle cellspacing=0 border=0>
 <tbody>
 <tr>
 <td class=CalNextPrev>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>&lt;</a>
 </td>
 <td align=center>2020年1月</td>
 <td align=right class=CalNextPrev>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>&gt;</a>
 </td>
 </tr>
 </tbody>
 </table>
 </td>
 </tr>
 <tr>
 <th class=CalDayHeader align=center abbr=日 scope=col>日</th>
 <th class=CalDayHeader align=center abbr=一 scope=col>一</th>
 <th class=CalDayHeader align=center abbr=二 scope=col>二</th>
 <th class=CalDayHeader align=center abbr=三 scope=col>三</th>
 <th class=CalDayHeader align=center abbr=四 scope=col>四</th>
 <th class=CalDayHeader align=center abbr=五 scope=col>五</th>
 <th class=CalDayHeader align=center abbr=六 scope=col>六</th>
 </tr>
 <tr>
 <td class=CalOtherMonthDay align=center>29</td>
 <td class=CalOtherMonthDay align=center>30</td>
 <td class=CalOtherMonthDay align=center>31</td>
 <td align=center>
 1
 </td>
 <td align=center>
 2
 </td>
 <td align=center>
 3
 </td>
 <td class=CalWeekendDay align=center>
 4
 </td>
 </tr>
 <tr>
 <td class=CalWeekendDay align=center>
 5
 </td>
 <td align=center>
 6
 </td>
 <td align=center>
 7
 </td>
 <td align=center>
 8
 </td>
 <td align=center>
 9
 </td>
 <td align=center>
 10
 </td>
 <td class=CalWeekendDay align=center>
 11
 </td>
 </tr>
 <tr>
 <td class=CalWeekendDay align=center>
 12
 </td>
 <td align=center>
 13
 </td>
 <td align=center>
 14
 </td>
 <td align=center>
 15
 </td>
 <td align=center>
 16
 </td>
 <td align=center>
 17
 </td>
 <td class=CalTodayDay align=center>
 18
 </td>
 </tr>
 <tr>
 <td class=CalWeekendDay align=center>
 19
 </td>
 <td align=center>
 20
 </td>
 <td align=center>
 21
 </td>
 <td align=center>
 22
 </td>
 <td align=center>
 23
 </td>
 <td align=center>
 24
 </td>
 <td class=CalWeekendDay align=center>
 25
 </td>
 </tr>
 <tr>
 <td class=CalWeekendDay align=center>
 26
 </td>
 <td align=center>
 27
 </td>
 <td align=center>
 28
 </td>
 <td align=center>
 29
 </td>
 <td align=center>
 30
 </td>
 <td align=center>
 31
 </td>
 <td class=CalOtherMonthDay align=center>
 1
 </td>
 </tr>
 <tr>
 <td class=CalOtherMonthDay align=center>
 2
 </td>
 <td class=CalOtherMonthDay align=center>
 3
 </td>
 <td class=CalOtherMonthDay align=center>
 4
 </td>
 <td class=CalOtherMonthDay align=center>
 5
 </td>
 <td class=CalOtherMonthDay align=center>
 6
 </td>
 <td class=CalOtherMonthDay align=center>
 7
 </td>
 <td class=CalOtherMonthDay align=center>
 8
 </td>
 </tr>
 </tbody>
</table></div>
 
 <div id=leftcontentcontainer>
 <div id=blog-sidecolumn>
<div id=sidebar_search class=sidebar-block>
 <div id=sidebar_search class=mySearch>
 <h3 class=catListTitle>搜索</h3>
 <div id=sidebar_search_box>
 <div id=widget_my_zzk class=div_my_zzk>
 <input type=text id=q class=input_my_zzk value>&nbsp;<input type=button value=找找看 id=btnZzk class=btn_my_zzk>
 </div>
 <div id=widget_my_google class=div_my_zzk>
 <input type=text name=google_q id=google_q class=input_my_zzk value>&nbsp;<input type=button value=谷歌搜索 class=btn_my_zzk>
 </div>
 </div>
 </div>
</div>
<div id=sidebar_shortcut class=sidebar-block>
 <div class=catListLink>
<h3 class=catListTitle>
常用链接
</h3>
<ul>
 <li>
<a href=https://www.cnblogs.com/CCE-SWR/p/ title=我的博客的随笔列表>我的随笔</a>
</li>
 <li>
<a href=https://www.cnblogs.com/CCE-SWR/MyComments.html title=我的发表过的评论列表>我的评论</a>
</li>
 <li>
<a href=https://www.cnblogs.com/CCE-SWR/OtherPosts.html title=我评论过的随笔列表>我的参与</a>
</li>
 <li>
<a href=https://www.cnblogs.com/CCE-SWR/RecentComments.html title=我的博客的评论列表>最新评论</a>
</li>
 <li>
<a href=https://www.cnblogs.com/CCE-SWR/tag/ title=我的博客的标签列表>我的标签</a>
</li>
</ul>
<div id=itemListLin_con style=display:none>
<ul>
</ul>
</div>
</div>
</div>
<div id=sidebar_toptags class=sidebar-block>
 <div class=catListTag>
<h3 class=catListTitle>我的标签</h3>
<ul>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/Istio/>Istio</a>(44)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/k8s/>k8s</a>(20)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/cce/>cce</a>(5)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/%E5%AE%B9%E5%99%A8/>容器</a>(5)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/swr/>swr</a>(4)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/%E5%8D%8E%E4%B8%BA%E4%BA%91/>华为云</a>(4)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/Kubernetes/>Kubernetes</a>(2)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/cpu/>cpu</a>(1)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/docker/>docker</a>(1)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/%E6%B7%B7%E5%90%88%E4%BA%91/>混合云</a>(1)
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/tag/>更多</a>
 </li>
</ul>
</div>
</div>
<div id=sidebar_categories>
 
 <div id=sidebar_postarchive class="catListPostArchive sidebar-block">
 <h3 class=catListTitle>
 
随笔档案
 </h3>
 <ul>
 <li>
 
<a href=https://www.cnblogs.com/CCE-SWR/archive/2019/04.html rel target>
 2019年4月(14)
</a>
 
 </li>
 <li>
 
<a href=https://www.cnblogs.com/CCE-SWR/archive/2019/03.html rel target>
 2019年3月(17)
</a>
 
 </li>
 <li>
 
<a href=https://www.cnblogs.com/CCE-SWR/archive/2019/02.html rel target>
 2019年2月(16)
</a>
 
 </li>
 <li>
 
<a href=https://www.cnblogs.com/CCE-SWR/archive/2019/01.html rel target>
 2019年1月(23)
</a>
 
 </li>
 <li>
 
<a href=https://www.cnblogs.com/CCE-SWR/archive/2018/11.html rel target>
 2018年11月(12)
</a>
 
 </li>
 </ul>
 </div>
</div>
<div id=sidebar_recentcomments class=sidebar-block>
 <div class=catListComment>
<h3 class=catListTitle>最新评论</h3>
 <div class=RecentCommentBlock>
 <ul>
 <li class=recent_comment_title><a href=https://www.cnblogs.com/CCE-SWR/p/10715594.html#4236052>1. Re:如何顺利完成Kubernetes源码编译？</a></li>
 <li class=recent_comment_body>楼主， 我也遇到相同问题，但是我使用的是K8S版本v1.14.1。它的build/lib/release.sh文件中，没有找到类似你文档提到的命令"${DOCKER[@]}" build --pull...</li>
 <li class=recent_comment_author>--tiandong</li>
 <li class=recent_comment_title><a href=https://www.cnblogs.com/CCE-SWR/p/10550224.html#4205718>2. Re:315 · Istio1.1 功能预告，真的假不了</a></li>
 <li class=recent_comment_body>以下回答摘自，《深入浅出Isitio》作者崔秀龙所写。Istio 自然还是在努力的完成满足早期用户要求的基础上，加强对早期大众的吸引。自 2018 年 7 月发布 1.0 之后，经过近 8 个月的漫长...</li>
 <li class=recent_comment_author>--虾米丫丫</li>
 </ul>
 </div>
</div>
</div>
<div id=sidebar_topviewedposts class=sidebar-block>
 <div class=catListView>
<h3 class=catListTitle>阅读排行榜</h3>
 <div id=TopViewPostsBlock>
 <ul style=word-break:break-all>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/9990291.html>
 1. Istio技术与实践06：史上最全！Istio安装参数介绍(1328)
 </a>
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10569682.html>
 2. KubeEdge，一个Kubernetes原生边缘计算框架(1143)
 </a>
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10494025.html>
 3. 深入理解Kubernetes资源限制：内存(1112)
 </a>
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10530980.html>
 4. 深入理解Kubernetes资源限制：CPU(1023)
 </a>
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10678562.html>
 5. Kubernetes+Federation打造跨多云管理服务(640)
 </a>
 </li>
 </ul>
 </div>
</div>
</div>
<div id=sidebar_topcommentedposts class=sidebar-block>
 <div class=catListFeedback>
<h3 class=catListTitle>评论排行榜</h3>
 <div id=TopFeedbackPostsBlock>
 <ul style=word-break:break-all>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10715594.html>
 1. 如何顺利完成Kubernetes源码编译？(1)
 </a>
 </li>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10550224.html>
 2. 315 · Istio1.1 功能预告，真的假不了(1)
 </a>
 </li>
 </ul>
 </div>
</div>
</div>
<div id=sidebar_topdiggedposts class=sidebar-block>
 
<div id=topdigg_posts_wrap>
 <div class=catListView>
 <h3 class=catListTitle>推荐排行榜</h3>
 <div id=TopDiggPostsBlock>
 <ul style=word-break:break-all>
 <li>
 <a href=https://www.cnblogs.com/CCE-SWR/p/10715594.html>
 1. 如何顺利完成Kubernetes源码编译？(1)
 </a>
 </li>
 </ul>
 </div>
 </div>
</div>
</div></div>
 
 </div>
 
 </div>
 </div>
 <div class=clear></div>
 </div>
 <div class=clear></div>
 <div id=footer>
 
Copyright © 2020 容器魔方
<br><span id=poweredby>Powered by .NET Core 3.1.0 on Linux</span>
 </div>
</div>
 
